package server.simple100;


import org.junit.Test;

/***
 * 53. 最大子序和
 */
public class LeetCode53 {



    @Test
    public void test() {
        System.out.println(maxSubArray(new int[]{-2,1,-3,4,-1,2,1,-5,4}));
    }



    public int maxSubArray(int[] nums) {
        int max = nums[0];
        for (int i = 0; i < nums.length; i++) {
            int sum = nums[i];
            for (int j = i + 1; j < nums.length; j++) {
                // 判断单值是否为最大
                if (nums[j] > max) {
                    max = nums[j];
                }
                // 取和
                sum += nums[j];
                if (sum > max) {
                    max = sum;
                }
            }
        }
        return max;
    }
}


//
//    给定一个整数数组 nums ，找到一个具有最大和的连续子数组（子数组最少包含一个元素），返回其最大和。
//
//         
//
//        示例 1：
//
//        输入：nums = [-2,1,-3,4,-1,2,1,-5,4]
//        输出：6
//        解释：连续子数组 [4,-1,2,1] 的和最大，为 6 。
//        示例 2：
//
//        输入：nums = [1]
//        输出：1
//        示例 3：
//
//        输入：nums = [0]
//        输出：0
//        示例 4：
//
//        输入：nums = [-1]
//        输出：-1
//        示例 5：
//
//        输入：nums = [-100000]
//        输出：-100000
//         
//
//        提示：
//
//        1 <= nums.length <= 3 * 104
//        -105 <= nums[i] <= 105
//         
//
//        进阶：如果你已经实现复杂度为 O(n) 的解法，尝试使用更为精妙的 分治法 求解。
//
//        通过次数468,669提交次数870,907
//
//        来源：力扣（LeetCode）
//        链接：https://leetcode-cn.com/problems/maximum-subarray
//        著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。